home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
ai
/
gaf200b
/
example
/
robotarm.fbk
< prev
next >
Wrap
Text File
|
1994-06-25
|
6KB
|
185 lines
FEEDBACK Fdbck
CYCLE_TIME 0.05
! Name MIN MAX
INOUT Movement (-50.0, 50.0)
IN Current (-1.0, 1.0)
INOUT Position (0.0, 70.0)
IN Reference(0.0, 70.0)
LOCAL Last_move(-50.0, 50.0)
IN Pos_reg (0, 1)
ENABLE = Pos_reg OR ( CURRENT > 0.1 AND CURRENT < -0.1 ) OR
( MOVEMENT > 0.5 AND MOVEMENT < -0.5 );
INITIALIZATION
Last_move = Movement;
Position = 0;
Movement = 0;
RESET
Last_move = Movement;
Movement = 0;
PRE_PROCESSING
Position = DELTA_TIME * ( Movement + Last_move ) / 2 + Position;
Last_move = Movement;
END;
PRESET ! 0
! Reference = 70;
Position = 0;
END;
PRESET ! 1
! Reference = 35;
Position = 40;
END;
PRESET ! 2
! Reference = 35;
Position = 0;
END;
PRESET ! 3
! Reference = 35;
Position = 70;
END;
PRESET ! 4
! Reference = 35;
Position = 25;
END;
! Name Below Low High Above Max_truth
Symbol Very_low OF Position ( 0.0, 0.0, 3.0, 8.0, 1.0)
Symbol Low OF Position ( 0.0, 0.0, 25.0, 30.0, 1.0)
Symbol Medium_low OF Position ( 25.0, 30.0, 30.0, 35.0, 1.0)
Symbol Medium OF Position ( 30.0, 35.0, 35.0, 40.0, 1.0)
Symbol Medium_high OF Position ( 35.0, 40.0, 40.0, 45.0, 1.0)
Symbol High OF Position ( 40.0, 45.0, 70.0, 70.0, 1.0)
Symbol Very_High OF Position ( 60.0, 65.0, 70.0, 70.0, 1.0)
! Name Below Low High Above Truth Center
Symbol Down_large OF Movement (-50.0, -50.0, -20.0, -10.0, 1.0, -50.0)
Symbol Down_small OF Movement (-20.0, -10.0, -10.0, 0.0, 1.0)
Symbol Zero OF Movement (-10.0, 0.0, 0.0, 10.0, 1.0)
Symbol Up_small OF Movement ( 0.0, 10.0, 10.0, 20.0, 1.0)
Symbol Up_large OF Movement ( 10.0, 20.0, 50.0, 50.0, 1.0, 50.0)
Symbol Down_medium OF Movement (-25.0, -15.0, -15.0, -5.0, 1.0)
Symbol Down_creep OF Movement (-10.0, -5.0, -5.0, 0.0, 1.0)
Symbol Up_creep OF Movement ( 0.0, 5.0, 5.0, 10.0, 1.0)
Symbol Up_medium OF Movement ( 5.0, 15.0, 15.0, 25.0, 1.0)
! Name Below Low High Above Truth Center
Symbol Negative_large ( -1.0, -1.0, -0.4, -0.2, 1.0, -1.0)
Symbol Negative_small ( -0.4, -0.2, -0.2, 0.0, 1.0)
Symbol Zero ( -0.2, 0.0, 0.0, 0.2, 1.0)
Symbol Positive_small ( 0.0, 0.2, 0.2, 0.4, 1.0)
Symbol Positive_large ( 0.2, 0.4, 1.0, 1.0, 1.0, 1.0)
Symbol Negative ( -1.0, -1.0, 0.0, 0.0, 1.0)
Symbol Positive ( 0.0, 0.0, 1.0, 1.0, 1.0)
!!!!! Rules for output movement
!
! -------------- Current --------------
! -L -S ZERO +S +L
!-----|-------------------------------------
! UL | ZERO US UL UM UL
! US | DS ZERO US US UM
! Z | DS DS ZERO US US
! DS | DM DS DS ZERO US
! DL | DL DM DL DS ZERO
!
IF Position IS Very_low AND Current IS Positive
THEN Movement IS Up_creep
IF Position IS Very_low AND Current IS Negative
THEN Movement IS Down_creep
IF Position IS Very_high AND Current IS Positive
THEN Movement IS Up_creep
IF Position IS Very_high AND Current IS Negative
THEN Movement IS Down_creep
IF Movement IS up_large AND Current IS Negative_large
THEN Movement IS Zero
IF Movement IS up_large AND Current IS Negative_small
THEN Movement IS Up_small
! this rule will cause a peak Movement
!IF Movement IS up_large AND Current IS Zero
!THEN Movement IS Up_large
IF Movement IS up_large AND Current IS Positive_small
THEN Movement IS Up_medium
IF Movement IS up_large AND Current IS Positive_large
THEN Movement IS Up_large
IF Movement IS Up_small AND Current IS Negative_large
THEN Movement IS Down_small
IF Movement IS Up_small AND Current IS Negative_small
THEN Movement IS Zero
IF Movement IS Up_small AND Current IS Zero
THEN Movement IS Zero
IF Movement IS Up_small AND Current IS Positive_small
THEN Movement IS Up_small
IF Movement IS Up_small AND Current IS Positive_large
THEN Movement IS Up_medium
IF Movement IS Zero AND Current IS Negative_large
THEN Movement IS Down_creep
IF Movement IS Zero AND Current IS Negative_small
THEN Movement IS Down_small
IF Movement IS Zero AND Current IS Zero
THEN Movement IS Zero
IF Movement IS Zero AND Current IS Positive_small
THEN Movement IS Up_creep
IF Movement IS Zero AND Current IS Positive_large
THEN Movement IS Up_small
IF Movement IS Down_small AND Current IS Negative_large
THEN Movement IS Down_medium
IF Movement IS Down_small AND Current IS Negative_small
THEN Movement IS Down_small
IF Movement IS Down_small AND Current IS Zero
THEN Movement IS Zero
IF Movement IS Down_small AND Current IS Positive_small
THEN Movement IS Zero
IF Movement IS Down_small AND Current IS Positive_large
THEN Movement IS Up_small
IF Movement IS Down_large AND Current IS Negative_large
THEN Movement IS Down_large
IF Movement IS Down_large AND Current IS Negative_small
THEN Movement IS Down_medium
IF Movement IS Down_large AND Current IS Zero
THEN Movement IS Down_large
IF Movement IS Down_large AND Current IS Positive_small
THEN Movement IS Down_small
IF Movement IS Down_large AND Current IS Positive_large
THEN Movement IS Zero
END Fdbck;